package com.lms.time;

import java.time.*;
import java.time.chrono.Chronology;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;

/**
 * @Author: 李孟帅
 * @CreateTime: 2020-06-29 08:18
 * @Description:
 */
public class LocalDateTimeDemo {
    public static void main(String[] args) {
        //最大支持 LocalDateTime ，'+ 999999999-12-31T23：59：59.999999999'。
        LocalDateTime max = LocalDateTime.MAX;
        //最低支持 LocalDateTime ，'-999999999-01-01T00：00：00'。
        LocalDateTime min = LocalDateTime.MIN;
        //从默认时区的系统时钟获取当前的日期时间。
        LocalDateTime now = LocalDateTime.now();
        //获得这个日期时间的 LocalDate一部分。
        LocalDate localDate = now.toLocalDate();
        //获得这个日期时间的 LocalTime一部分。
        LocalTime localTime = now.toLocalTime();
        LocalDateTime of = LocalDateTime.of(localDate, localTime);
        //从年，月，日，小时，分钟和秒获得 LocalDateTime的实例，将纳秒设置为零。
        LocalDateTime time = LocalDateTime.of(2020, Month.JUNE, 29, 8, 30,0);
        //获取天数字段，一月中的第几天，如2020/6/29   29
        int dayOfMonth = now.getDayOfMonth();
        //获取星期几字段，这是一个枚举 DayOfWeek 。 如：MONDAY
        DayOfWeek dayOfWeek = now.getDayOfWeek();
        //获得日期字段。一年中的第几天，一年中，从1到365，或闰年366 ，如：181
        int dayOfYear = now.getDayOfYear();
        //获取时间字段。 时间从0到23
        int hour = now.getHour();
        //获取年份字段。 如2020
        int year = now.getYear();
        //使用 Month枚举获取月份字段。 如JUNE
        Month month = now.getMonth();
        //获取分钟字段。 分钟，从0到59
        int minute = now.getMinute();
        //将月份字段从1到12。 如6
        int monthValue = now.getMonthValue();
        //秒，从0到59
        int second = now.getSecond();
        //纳秒，从0到999,999,999 如362000000
        int nano = now.getNano();
        //获得这个日期时间的年表。 ISO
        Chronology chronology = now.getChronology();
        //返回此日期时间的副本，并添加指定的金额。
        LocalDateTime plus = now.plus(1, ChronoUnit.YEARS);
        //返回这个 LocalDateTime的副本，其中指定的时间段以添加的年数表示。
        LocalDateTime localDateTime = now.plusYears(2);
        //返回此日期时间的副本，并减去指定的金额。
        LocalDateTime minus = now.minus(1, ChronoUnit.MONTHS);
        //返回这个 LocalDateTime的副本，年份被更改。
        LocalDateTime localDateTime1 = now.withYear(2019);
        //返回此日期时间的副本，并将指定的字段设置为新值。
        LocalDateTime with = now.with(ChronoField.MONTH_OF_YEAR, 7);
        LocalDateTime with1 = now.with(Month.SEPTEMBER);
        LocalDateTime with2 = now.with(Year.of(2021));
        System.out.println(now);

    }
}
